#ifndef MC_ELEMENT_REBAR_EXPRESSION_H
#define MC_ELEMENT_REBAR_EXPRESSION_H

#include <map>
#include <string>

class McElementRebarExpressionImp;

struct McRebarExpressionVar
{
	typedef std::map<std::wstring, double> ExpressionVars;

	ExpressionVars vars;
};

class McElementRebarExpression
{
public:
	McElementRebarExpression();
	~McElementRebarExpression();

	void setRebarVars(const McRebarExpressionVar* global, const McRebarExpressionVar* local = nullptr);

	double calc(const std::wstring& expr);

private:
	McElementRebarExpression(const McElementRebarExpression&) = delete;
	McElementRebarExpression& operator=(const McElementRebarExpression&) = delete;

	McElementRebarExpressionImp* m_imp;
};

#endif//MC_ELEMENT_REBAR_EXPRESSION_H